/*
 * EntityDao.java
 * @author kim
 * @version 1.1
 */
package com.sms.plateform.kernel.dao;

import java.util.List;
import java.util.Map;

import com.sms.plateform.common.page.PageProperty;


/**
 * @Description: 基础DAO接口，包含常用数据库操作。所有DAO接口必须继承的接口
 * @author luj
 * @version 1.0
 * @created Feb 11, 2009
 */
public interface BaseDao<T> {
	
    /**
     * @Description:得到数据对象
     * @param param map参数
     * @return 实体对象
     */
    public abstract T getModel(Map param);
    
    /**
     * @Description:创建数据对象
     * @param po 实体对象
     */
    public abstract void insert(T po);

    /**
     * @Description:单条修改数据对象
     * @param po 实体对象
     * @return 所影响的行数
     */
    public abstract int update(T po);

    /**
     * @Description:批量修改数据对象
     * @param param map参数
     * @return 所影响的行数
     */
    public abstract int updateList(Map param);
    
    /**
     * @Description:删除数据对象
     * @param param map参数
     * @return 所影响的行数
     */
    public abstract int delete(Map param);
    
    /**
     * @Description:得到数据数量按分页条件
     * @param pp PageProperty对象
     * @return 数据条数
     */
    public abstract int findCount(PageProperty pp);
 
    /**
     * @Description:得到数据对象列表按分页条件 当pp.getNpageSize=0时返回所有
     * @param pp PageProperty对象
     * @return 实体列表
     */
    public abstract List<T> findPageList(PageProperty pp);
    
    /**
     * @Description:得到数据对象列表
     * @param param map参数
     * @return 实体列表
     */
    public abstract List<T> list(Map param);
    
    

}